normalized_exact_match
初驗了各選手的結果Semantic Similarity Evaluator
: 驗證 response
與 reference_answer
的相似性Correctness Evaluator
: 給定 query
, response
與 reference_answer
,要求 llm 判斷答案正確性Faithfulness Evaluator
: 給定 response
與 reference_context
,要求 llm 判斷 response
是否有忠於 reference_context
Correctness Evaluator
靠不靠譜吧!那我們就開始吧!
days/day21/data/source
路徑下:
evaluation_dataset
存放的是先前準備好給 evalautor 當 input 的資料集
normalized_exact_match_result
存放的是昨天使用 normalized_exact_match
跑出來的結果
qid
之後,我們會針對性的檢視 evaluator 的結果,我們把 correctness 的 output 改為存放以 qid 為 key,dictionary 為 value 的格式CorrectnessEvaluator.py
gpt-5-mini
作為 CorrectnessEvaluator 的 llm這邊要先說明一下,我們昨天在使用 exact match 評估的時候,只有比較 題幹
的部分
我們今天直接評估整個單選題的結果,因此預期是 correctness evaluator 會抓出比 exact match 更多的 錯誤結果
此外,由於 correctness 整體的評分結果是從滿分(5分)開始,一個瑕疵就給 4 分,兩個瑕疵就給 3分依此類推
整體來說,在 80 題的評估內,
69
題6
題是 correctness 額外抓出了除了題幹以外的提取問題,不應算錯
False Negative
,應該判定為有問題,而 correctness 判定為無問題
0.9375
的準確率在我們的問題集上詳細結果在: 這裡
由於前述提到,correctness 基本上是直接 prompt llm 進行驗證
而根據我們先前的經驗,直接將 default prompt 翻譯為中文並且微幅修改可以增加整體的準確性
因此我們修改了 default prompt 再進行一次驗證
調整 correctness_evaluator prompt 的方法是: 直接在 initial 的時候把 prompt 給他:
correct_evaluator = CorrectnessEvaluator(llm = llm, score_threshold=4.0, eval_template=chat_template)
並且可以使用 get_prompts
查看是否成功更新:
correct_evaluator.get_prompts()
prompt_correctness_evaluator 的 結果在: 這裡
False Positive
,有辦法在修改後除去這些錯誤
False Negative
:
0.95
的準確率在我們的問題集上
Semantic Similarity Evaluator
的結果